#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File  : timeDecorator.py
# @Author: shadow
# @Date  : 2020/2/18
# @Desc  :

"""
要求：
1. 请设计一个decorator，它可作用于任何函数上，并打印该函数的执行时间
2. 请设计一个decorator，它可作用于任何函数上，要求可以接受一个int作为参数，如果该函数的执行时间大于int传递的时间话，请打印改函数名字和执行时间
"""

import time


def delat_check(limit, delat, func):
    if limit and delat > limit:
        print(f"函数:{func.__name__} 运行耗时 {delat:.3f}秒")
    else:
        print(f"运行耗时 {delat:.3f}秒")


def timeDeco(fn):
    def timeFun(*args, **kwargs):
        start = time.time()
        fn(*args, **kwargs)
        print(f"运行耗时 {time.time() - start:.3f}秒")
    return timeFun


def paraDeco(limit=0, func=delat_check):
    def timeDeco(fn):
        def timeFun(*args, **kwargs):
            start = time.time()
            fn(*args, **kwargs)
            delat = time.time() - start
            func(limit, delat, fn)
        return timeFun
    return timeDeco


@timeDeco
@paraDeco(0.01)
def getNum():
    n = 0
    for i in range(1000000):
        n += i

getNum()

# 你的这个装饰器再优化下


